<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

class Avaluos extends CI_Controller {

    public function index() {
        exit("Acceso denegado");
    }

    public function crud() {
        /* Función para realizar el llamdo a la vista que realiza el crud de los avaluos */
        $parametros = array();
        $this->load->model("proyectos_model", "proyectos", true);
        $this->load->model("maestras_model", "maestras", true);
        $this->load->model("avaluos_model", "avaluos", true);
        $parametros["proyectos"] = $this->proyectos->consulta();
        $parametros["departamentos"] = $this->maestras->departamentos();
        $parametros["inmuebles"] = $this->maestras->inmuebles();
        $parametros["usoActual"] = $this->maestras->usosActuales();
        $parametros["vias"] = $this->despliegaVias($this->maestras->vias());
        $estados = $this->maestras->estadosPredios();
        $parametros["estados"] = $this->despliegaEstados($estados);
        $parametros["estadosGrilla"] = $this->estadosJqgrid($estados);
        $parametros["avaluos"] = $this->avaluos->consulta();
        $parametros["servicios"] = $this->maestras->serviciosPublicos();
        $parametros["firmantes"] = $this->maestras->firmantes();
        $unidades = $this->maestras->unidades();
        $parametros["unidades"] = $this->despliegaUnidades($unidades);
        $parametros["undJqgrid"] = $this->unidadesJqgrid($unidades);
        $parametros["transaccion"] = $this->maestras->incrementaTransaccion(6);
        $parametros["transaccion1"] = $parametros["transaccion"] + 1;
        $parametros["transaccion2"] = $parametros["transaccion"] + 2;
        $parametros["transaccion3"] = $parametros["transaccion"] + 3;
        $parametros["transaccion4"] = $parametros["transaccion"] + 4;
        $parametros["transaccion5"] = $parametros["transaccion"] + 5;
        $this->load->view("avaluoCrud_view", $parametros);
        return;
    }

//fin public function crud(){

    public function consulta() {
        $parametros = array();
        $this->load->model("proyectos_model", "proyectos", true);
        $this->load->model("maestras_model", "maestras", true);
        $this->load->model("avaluos_model", "avaluos", true);
        $parametros["avaluos"] = $this->avaluos->consulta();
        $parametros["departamentos"] = $this->maestras->departamentos();
        $parametros["inmuebles"] = $this->maestras->inmuebles();
        $parametros["firmantes"] = $this->maestras->firmantes();
        $this->load->view("avaluoConsulta_view", $parametros);
    }

//fin public function consulta(){
    public function cargaDatos() {
        $avaluoId = trim($this->input->post("avalId"));
        if ($avaluoId == "")
            exit("Parametros incorrectos");
        $transaccion = trim($this->input->post("trans"));
        $transaccion1 = trim($this->input->post("trans1"));
        $transaccion2 = trim($this->input->post("trans2"));
        $transaccion3 = trim($this->input->post("trans3"));
        $transaccion4 = trim($this->input->post("trans4"));
        $transaccion5 = trim($this->input->post("trans5"));
        $this->load->model("visitas_model", "visitas", true);
        $this->load->model("maestras_model", "maestras", true);
        $this->maestras->limpiaTemporal($transaccion, $transaccion1, $transaccion2, $transaccion3, $transaccion4, $transaccion5);
        $visitaId = $this->visitas->ultimaVisita($avaluoId);
        $salida = "<script type='text/javascript'>";
        $salida .= "GLOBAL.extraeAvaluo = false;";
        $salida .= "fntodoActivo();";
        $salida .= "$('#frAvaluos').trigger('reset');";
        $salida .= "$('#avaluoId').val('$avaluoId');";
        $salida .= "GLOBAL.extraeAvaluo = true;";
        if (trim($visitaId) != "") {
            $parametros = $this->visitas->consulta($visitaId, $transaccion, $transaccion1, $transaccion2, $transaccion3, $transaccion4, $transaccion5);
            $salida .= "seleccionaCheckEnDiv(\"divListaUsoActual\",'{$parametros["usoActualArray"]}');";
            $salida .= "seleccionaCheckEnDiv(\"divListaServicios1\",'{$parametros["servPubliVisitaArray"]}');";
            $salida .= "seleccionaCheckEnDiv(\"divListaUsoActual1\",'{$parametros["usoPredominanteArray"]}');";
            $salida .= "seleccionaCheckEnDiv(\"divListaServicios2\",'{$parametros["servPubliPredioArray"]}');";
            $salida .= "seleccionaCheckEnDiv(\"divListaUsoActual2\",'{$parametros["usoPredioArray"]}');";
            $campos = $parametros["campos"];
            foreach ($campos->result() as $row) {
                foreach ($row as $key => $val) {
                    if ($key == "avaluoAprobado")
                        continue;
                    $salida .= "document.getElementById('$key').value = '" . $this->escapeJs($val) . "'; ";
                } //fin foreach ($row as $key => $val) {
                $salida .= " fnCambiaDpto('{$row->selDepartamento}','{$row->ciudadId}');";
                if ($row->avaluoAprobado == "Aprobado") {
                    $salida .= "fntodoLectura();";
                    $salida .= "document.getElementById('avaluoId').disabled = false;";
                }
            }
        }
        $salida .= "</script>";
        echo $salida;
    }

    private function escapeJs($variable) {
        return addcslashes($variable, "\\\'\"&\n\r<>");
    }

    public function edita($visitaId, $edita = null) {
        $parametros = array();
        $this->load->model("proyectos_model", "proyectos", true);
        $this->load->model("maestras_model", "maestras", true);
        $this->load->model("avaluos_model", "avaluos", true);
        $this->load->model("visitas_model", "visitas", true);
        $parametros["edita"] = $edita;
        $parametros["proyectos"] = $this->proyectos->consulta();
        $parametros["departamentos"] = $this->maestras->departamentos();
        $parametros["inmuebles"] = $this->maestras->inmuebles();
        $parametros["usoActual"] = $this->maestras->usosActuales();
        $parametros["vias"] = $this->despliegaVias($this->maestras->vias());
        $estados = $this->maestras->estadosPredios();
        $parametros["estados"] = $this->despliegaEstados($estados);
        $parametros["estadosGrilla"] = $this->estadosJqgrid($estados);
        $parametros["avaluos"] = $this->avaluos->consulta(null, 'edita');
        $parametros["servicios"] = $this->maestras->serviciosPublicos();
        $parametros["firmantes"] = $this->maestras->firmantes();
        $parametros["aprobado"] = $this->avaluos->estaAprobado($visitaId);
        $unidades = $this->maestras->unidades();
        $parametros["unidades"] = $this->despliegaUnidades($unidades);
        $parametros["undJqgrid"] = $this->unidadesJqgrid($unidades);
        $parametros["transaccion"] = $this->maestras->incrementaTransaccion(6);
        $parametros["transaccion1"] = $parametros["transaccion"] + 1;
        $parametros["transaccion2"] = $parametros["transaccion"] + 2;
        $parametros["transaccion3"] = $parametros["transaccion"] + 3;
        $parametros["transaccion4"] = $parametros["transaccion"] + 4;
        $parametros["transaccion5"] = $parametros["transaccion"] + 5;
        $parametros["visitaId"] = $visitaId;
        $parametros1 = $this->visitas->consulta($visitaId, $parametros["transaccion"], $parametros["transaccion1"], $parametros["transaccion2"], $parametros["transaccion3"], $parametros["transaccion4"], $parametros["transaccion5"]);
        $parametros = $parametros + $parametros1;
        $this->load->view("avaluoCrud_view", $parametros);
    }

//fin public function consulta(){

    public function subefotos() {
        session_start();
        $parametros = array();
        $this->load->model("visitas_model", "visitas", true);
        $this->load->model("proyectos_model", "proyectos", true);
        $parametros["proyectos"] = $this->proyectos->consulta();
        $parametros["visitaId"] = $this->visitas->consTodasVisitas();
        $parametros["admin"] = ($_SESSION["Rol"] == "1")?true:false;
        $this->load->view("subeFotos_view", $parametros);
    }

//fin public function subefotos(){

    private function despliegaUnidades($unidades) {
        $opciones = "";
        foreach ($unidades->result() as $row) {
            $opciones .= "<option value='{$row->unidadId}'>{$row->unidadNombre}</option>";
        }
        return $opciones;
    }

//fin private function despliegaUnidades($unidades){

    private function despliegaEstados($estados) {
        $opciones = "";
        foreach ($estados->result() as $row) {
            $opciones .= "<option value='{$row->estadoPredId}'>{$row->estadoPredNombre}</option>";
        }
        return $opciones;
    }

//fin private function despliegaEstados($estados){

    private function despliegaVias($vias) {
        $opciones = "";
        foreach ($vias->result() as $row) {
            $opciones .= "<option value='{$row->viaId}'>{$row->viaNombre}</option>";
        }
        return $opciones;
    }

//fin private function despliegaVias($vias){

    private function unidadesJqgrid($unidades) {
        $opciones = ":Seleccione..;";
        foreach ($unidades->result() as $row) {
            $opciones .= $row->unidadId . ":" . $row->unidadNombre . ";";
        }
        return trim($opciones, ";");
    }

//fin private function unidadesJqgrid($unidades){

    private function estadosJqgrid($estados) {
        $opciones = ":Seleccione..;";
        foreach ($estados->result() as $row) {
            $opciones .= $row->estadoPredId . ":" . $row->estadoPredNombre . ";";
        }
        return trim($opciones, ";");
    }

//fin private function estadosJqgrid($estados){

    public function crea($isMobile = false) {
        $proyectoId = $this->input->get("proyecto");
        $numeroAvaluo = $this->input->get("avaluo");
        $retorna = array();
        //Para aplicacion Android
        $avaluo_id = 0;
        if (trim($proyectoId) == "") {
            $retorna["error"] = 1;
            $retorna["mensaje"] = "Debe elegir un número de proyecto";
        }
        if (trim($numeroAvaluo) == "") {
            $retorna["error"] = 1;
            $retorna["mensaje"] = "Debe asignar un número de avaluo";
        }
        $this->load->model("avaluos_model", "avaluos", true);
        if ($this->avaluos->validaNumAvaluosPermitido($proyectoId)) {
            if($isMobile)
                $avaluo_id = $this->avaluos->crear($proyectoId, $numeroAvaluo, "", true);
            else
                $retorna = $this->avaluos->crear($proyectoId, $numeroAvaluo, "");
        } else {
            $retorna["error"] = 1;
            $retorna["mensaje"] = "Ha excedido el número de avaluos para este proyecto";
        }
        if($isMobile)
            echo $avaluo_id;
        else
            echo json_encode($retorna);
        return;
    }

//fin public function crea(){

    public function extrae() {
        $combo = "<option value=''>Elija</option>";
        $this->load->model("avaluos_model", "avaluos", true);
        $avaluos = $this->avaluos->consulta();
        if ($avaluos->num_rows() > 0)
            foreach ($avaluos->result() as $avaluo) {
                $combo .= "<option value='{$avaluo->avaluoId}'>{$avaluo->avaluoNumero}-{$avaluo->avaluoFechaCreo}</option>";
            }
        echo $combo;
        return;
    }

//fin public function crea(){

    public function avaluoProyectos($aprobados = null) {
        if (!is_numeric($this->input->post("proyecto"))) {
            exit("Parametros incorrectos");
        }
        $this->load->model("avaluos_model", "avaluos", true);
        echo $this->avaluos->consulta($this->input->post("proyecto"), null, $aprobados);
    }

//fin public function avaluoProyectos(){

    public function aprobacion() {
        $parametro = array();
        $this->load->model("proyectos_model", "proyecto", TRUE);
        $parametro["proyectos"] = $this->proyecto->consulta();
        $this->load->view("apruebaAvaluo_view", $parametro);
    }

//fin public function aprobacion(){

    public function aprobar() {
        $avaluoId = $this->input->post("aval");
        $observacion = $this->input->post("obs");
        if (trim($avaluoId) == "")
            exit("Parametros incorrectos");
        $this->load->model("avaluos_model", "avaluos", TRUE);
        $this->avaluos->aprobar($avaluoId, $observacion);
        echo '1';
    }

//fin public function aprobacion(){
    public function cargaAvaluos() {
        $proyectoId = trim($this->input->post("proyecto"));
        if ($proyectoId == "")
            exit("Parametros incorrectos");
        $this->load->model("proyectos_model", "proyecto", TRUE);
        $avaluos = $this->proyecto->avaluos($proyectoId);
        $campos = "<option value=''>Elija</option>";
        if ($avaluos->num_rows() > 0) {
            foreach ($avaluos->result() as $row) {
                $campos .= "<option value='{$row->avaluoId}'>{$row->avaluoNumero} - {$row->avaluoFechaCreo}</option>";
            }
        }
        echo $campos;
    }

//fin public function cargaAvaluos(){

    public function cargaVisitas() {
        $avaluoId = trim($this->input->post("aval"));
        if ($avaluoId == "")
            exit("Parametros incorrectos");
        $this->load->model("proyectos_model", "proyecto", TRUE);
        $avaluos = $this->proyecto->visitas($avaluoId);
        $campos = "<option value=''>Elija</option>";
        if ($avaluos->num_rows() > 0) {
            foreach ($avaluos->result() as $row) {
                $campos .= "<option value='{$row->visitaId}'>{$row->visitaFechaVisita}</option>";
            }
        }
        echo $campos;
    }

//fin public function cargaVisitas(){
    
    public function cargaVisitasMobile() {
        $avaluoId = trim($this->input->post("aval"));
        if ($avaluoId == "")
            exit("Parametros incorrectos");
        $this->load->model("proyectos_model", "proyecto", TRUE);
        $visitas = $this->proyecto->visitas($avaluoId);
        echo json_encode($visitas->result());
    }  //fin public function cargaVisitas() {
    public function avaluosCrud(){
        session_start();
        $parametros = array();
        $parametros["edit"] = "false";
        $parametros["add"] = "false";
        $parametros["view"] = "false";
        $parametros["del"] = "false";
        switch($_SESSION["Rol"]){
            case '1':
                $parametros["edit"] = "true";
                $parametros["add"] = "true";
                $parametros["view"] = "true";
                $parametros["del"] = "true";
                break;
            case '2':
                $parametros["edit"] = "true";
                $parametros["add"] = "true";
                $parametros["view"] = "true";
                break;
            case '3':
                $parametros["edit"] = "true";
                $parametros["view"] = "true";
                break;
            default:
                return false;
                break;
        }
        $this->load->model("avaluos_model", "avaluos", true);
        $this->load->model("proyectos_model", "proyectos", true);
        $parametros["avaluos"] = $this->avaluos->consulta();
        $tmp = $this->proyectos->consulta();
        $options = ":Seleccione...";
        if($tmp->num_rows() > 0){
            foreach($tmp->result() as $row){
                $options .= ";".$row->proyectoId.":".$row->proyectoNombre;
            }
            $options = trim($options, ";");
        }
        $parametros["proyectos"] = $options;
        $this->load->view("avaluos_view", $parametros);
    }
    public function acciones(){
        $oper = trim($this->input->post("oper"));
        $proyectoNombre = trim($this->input->post("proyectoNombre"));
        $avaluoNumero = trim($this->input->post("avaluoNumero"));
        if(($oper == "" || $proyectoNombre == "" || $avaluoNumero == "") && $oper != "del")
            exit("Parametros incorrectos");
        $this->load->model("avaluos_model","avaluos",true);
        $this->avaluos->crud($oper,$proyectoNombre,$avaluoNumero);
    }
}
